home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Controls / Visual Basic Controls.iso / vbcontrol / sgwnd10 / csystemm.cls < prev    next >
Encoding:
Visual Basic class definition  |  1998-08-01  |  1.9 KB  |  81 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "CSystemMenu"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = True
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = False
  10. Option Explicit
  11.  
  12. Private mWnd As Window      ' Window whose WM_SYSCOMMAND messages we are going to track
  13. Implements IsgMessageSink   ' Message sink implementation
  14.  
  15.  
  16. ' System command constants
  17. ' For a description of this commands take a look at the Win32 SDK
  18. Const SC_SIZE = &HF000&
  19. Const SC_MOVE = &HF010&
  20. Const SC_MINIMIZE = &HF020&
  21. Const SC_MAXIMIZE = &HF030&
  22. Const SC_NEXTWINDOW = &HF040&
  23. Const SC_PREVWINDOW = &HF050&
  24. Const SC_CLOSE = &HF060&
  25. Const SC_VSCROLL = &HF070&
  26. Const SC_HSCROLL = &HF080&
  27. Const SC_MOUSEMENU = &HF090&
  28. Const SC_KEYMENU = &HF100&
  29. Const SC_ARRANGE = &HF110&
  30. Const SC_RESTORE = &HF120&
  31. Const SC_TASKLIST = &HF130&
  32. Const SC_SCREENSAVE = &HF140&
  33. Const SC_HOTKEY = &HF150&
  34. Const SC_DEFAULT = &HF160&
  35. Const SC_MONITORPOWER = &HF170&
  36. Const SC_CONTEXTHELP = &HF180&
  37. Const SC_SEPARATOR = &HF00F&
  38.  
  39.  
  40. Public Property Let hwnd(wnd As Long)
  41.     On Error GoTo Error_
  42.     
  43.     If mWnd Is Nothing Then
  44.         Set mWnd = New Window
  45.     Else
  46.         ' Disable all messages
  47.         mWnd.EnableMessage wm_ALL, False
  48.     End If
  49.     
  50.     mWnd.hwnd = wnd
  51.     mWnd.EnableMessage wm_SYSCOMMAND
  52.     mWnd.Callback = Me
  53.     mWnd.Hooked = True
  54.     
  55.     Exit Property
  56. Error_:
  57.     MsgBox Error$
  58. End Property
  59.  
  60. Public Property Get hwnd() As Long
  61.     hwnd = mWnd.hwnd
  62. End Property
  63.  
  64. Private Sub IsgMessageSink_Message(ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByRef result As Long)
  65.     wParam = (wParam And &HFFF0)
  66.     
  67.     ' Disable screen saver
  68.     Select Case wParam
  69.         Case SC_SCREENSAVE
  70.     
  71.         Case SC_MAXIMIZE, SC_MINIMIZE
  72.             
  73.         Case SC_CLOSE
  74.         
  75.       Case Else
  76.          result = mWnd.CallWindowProc(msg, wParam, lParam)
  77.     End Select
  78. End Sub
  79.  
  80.  
  81.